package com.project.sianet.entidades;

import java.util.Date;
import java.util.List;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;

import android.os.Parcel;
import android.os.Parcelable;

import com.project.sianet.entidades.enumerator.TipoInfoAcademica;

@JsonIgnoreProperties(ignoreUnknown=true)
public class Actividad implements Parcelable {

	public int actCodigo;
	public TipoInfoAcademica actTipo;
	public String actTitulo;
	public String actTituloDetalle;
	public String actDetalle;
	public String actEnlace;
	public Date actFechaPub;
	public Date actFechaIni;
	public Date actFechaFin;
	public String actProfesor;
	public String actCurso;
	public int actPerfilUsuIngreso;
	public String actNombreUsuario;
	public List<String> actArchivos;
	public List<String> actUrls;
	
	public Actividad() {}

	@JsonProperty("Codigo")
	public int getActCodigo() {
		return actCodigo;
	}

	@JsonProperty("Codigo")
	public void setActCodigo(int actCodigo) {
		this.actCodigo = actCodigo;
	}

	@JsonProperty("Tipo")
	public TipoInfoAcademica getActTipo() {
		return actTipo;
	}

	@JsonProperty("Tipo")
	public void setActTipo(TipoInfoAcademica actTipo) {
		this.actTipo = actTipo;
	}

	@JsonProperty("Titulo")
	public String getActTitulo() {
		return actTitulo;
	}

	@JsonProperty("Titulo")
	public void setActTitulo(String actTitulo) {
		this.actTitulo = actTitulo;
	}
	
	@JsonProperty("TituloDet")
	public String getActTituloDetalle() {
		return actTituloDetalle;
	}

	@JsonProperty("TituloDet")
	public void setActTituloDetalle(String actTituloDetalle) {
		this.actTituloDetalle = actTituloDetalle;
	}

	@JsonProperty("Detalle")
	public String getActDetalle() {
		return actDetalle;
	}

	@JsonProperty("Detalle")
	public void setActDetalle(String actDetalle) {
		this.actDetalle = actDetalle;
	}

	@JsonProperty("Enlace")
	public String getActEnlace() {
		return actEnlace;
	}

	@JsonProperty("Enlace")
	public void setActEnlace(String actEnlace) {
		this.actEnlace = actEnlace;
	}

	@JsonProperty("FechaPub")
	public Date getActFechaPub() {
		return actFechaPub;
	}

	@JsonProperty("FechaPub")
	public void setActFechaPub(Date actFechaPub) {
		this.actFechaPub = actFechaPub;
	}

	@JsonProperty("FechaIni")
	public Date getActFechaIni() {
		return actFechaIni;
	}

	@JsonProperty("FechaIni")
	public void setActFechaIni(Date actFechaIni) {
		this.actFechaIni = actFechaIni;
	}

	@JsonProperty("FechaFin")
	public Date getActFechaFin() {
		return actFechaFin;
	}

	@JsonProperty("FechaFin")
	public void setActFechaFin(Date actFechaFin) {
		this.actFechaFin = actFechaFin;
	}

	@JsonProperty("Profesor")
	public String getActProfesor() {
		return actProfesor;
	}

	@JsonProperty("Profesor")
	public void setActProfesor(String actProfesor) {
		this.actProfesor = actProfesor;
	}

	@JsonProperty("Curso")
	public String getActCurso() {
		return actCurso;
	}

	@JsonProperty("Curso")
	public void setActCurso(String actCurso) {
		this.actCurso = actCurso;
	}

	@JsonProperty("PerfilUsuario")
	public int getActPerfilUsuIngreso() {
		return actPerfilUsuIngreso;
	}

	@JsonProperty("PerfilUsuario")
	public void setActPerfilUsuIngreso(int actPerfilUsuIngreso) {
		this.actPerfilUsuIngreso = actPerfilUsuIngreso;
	}

	@JsonProperty("NombreUsuario")
	public String getActNombreUsuario() {
		return actNombreUsuario;
	}

	@JsonProperty("NombreUsuario")
	public void setActNombreUsuario(String actNombreUsuario) {
		this.actNombreUsuario = actNombreUsuario;
	}

	@JsonProperty("Archivos")
	public List<String> getActArchivos() {
		return actArchivos;
	}

	@JsonProperty("Archivos")
	public void setActArchivos(List<String> actArchivos) {
		this.actArchivos = actArchivos;
	}

	@JsonProperty("Urls")
	public List<String> getActUrls() {
		return actUrls;
	}

	@JsonProperty("Urls")
	public void setActUrls(List<String> actUrls) {
		this.actUrls = actUrls;
	}

	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void writeToParcel(Parcel out, int flags) {
		out.writeInt(actCodigo);
		out.writeInt(actTipo.getNumVal());
		out.writeString(actTitulo);
		out.writeString(actTituloDetalle);
		out.writeString(actDetalle);
		out.writeString(actEnlace);
		out.writeLong(actFechaPub.getTime());
		out.writeLong(actFechaIni.getTime());
		out.writeLong(actFechaFin.getTime());
		out.writeString(actProfesor);
		out.writeString(actCurso);
		out.writeInt(actPerfilUsuIngreso);
		out.writeString(actNombreUsuario);
		out.writeArray(actArchivos.toArray());
		out.writeArray(actUrls.toArray());
	}
	
	public static final Parcelable.Creator<Actividad> CREATOR = new Parcelable.Creator<Actividad>() {
		public Actividad createFromParcel(Parcel in) {
		    return new Actividad(in);
		}
		
		public Actividad[] newArray(int size) {
		    return new Actividad[size];
		}
	};
	
	@SuppressWarnings("unchecked")
	private Actividad(Parcel in) {
		actCodigo = in.readInt();
		actTipo = TipoInfoAcademica.values()[in.readInt()];
		actTitulo = in.readString();
		actTituloDetalle = in.readString();
		actDetalle = in.readString();
		actEnlace = in.readString();
		actFechaPub = new Date(in.readLong());
		actFechaIni =  new Date(in.readLong());
		actFechaFin =  new Date(in.readLong());
		actProfesor = in.readString();
		actCurso = in.readString();
		actPerfilUsuIngreso = in.readInt();
		actNombreUsuario = in.readString();
		actArchivos = in.readArrayList(String.class.getClassLoader());
		actUrls = in.readArrayList(String.class.getClassLoader());
    }
	
}
